﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using GestionIncidencias.Models;

namespace GestionIncidencias.Controllers
{
    public class IncidenteController : Controller
    {
        private List<Incidente> CrearIncidente()
        {

            List<Incidente> incidentes = new List<Incidente>();
            incidentes.Add(new Incidente() { Codigo = 1, Cliente = "Manuel Rojas", Servicio = "Sistema de Promociones", Tipo = "Incidente", Estado = "En Curso", Tecnico = "Frank",
                                            FechaTicket=DateTime.Today, FechaCierre=DateTime.Now, Solucion="", Descripcion="Sistema promociones no muestra data real", Evaluacion="", ComentarioSolucion="" });
            incidentes.Add(new Incidente() { Codigo = 2, Cliente = "Carlos Chavez", Servicio = "SAP R3 Supermercados", Tipo = "Incidente", Estado = "En Curso", Tecnico = "Miguel",
                                            FechaTicket=DateTime.Today, FechaCierre=DateTime.Now, Solucion="", Descripcion="Sistema SAP R3 Supermecardos no inicia en operadores", Evaluacion="", ComentarioSolucion="" });
            return incidentes;
        }


        private Incidente ObtenerIncidente (int codigo)
        {
            List<Incidente> incidentes = (List<Incidente>)Session["incidentes"];
            Incidente model = incidentes.Single(delegate(Incidente incidente){
            if (incidente.Codigo == codigo) return true;
            else return false;
            });
                return model;
        }



        // GET: /Incidente/
        public ActionResult Index()
        { 
            if (Session["incidentes"]== null)
                Session["incidentes"]= CrearIncidente();
            List<Incidente> model=(List<Incidente>)Session["incidentes"];
            return View(model); 
        }


        // GET: /Incidente/Details/5
        public ActionResult Details(int id)
        {
            Incidente model = ObtenerIncidente(id);
            return View(model);
        }


        // GET: /Incidente/Create
        public ActionResult Create()
        {
            return View();
        } 
        // POST: /Incidente/Create
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                List<Incidente>incidentes=(List<Incidente>)Session["incidentes"];
                incidentes.Add(new Incidente()
                {
                    Codigo = int.Parse(collection["Codigo"]),
                    Cliente = collection["Cliente"],
                    Servicio = collection["Servicio"],
                    Tipo = collection["Tipo"],
                    Estado = collection["Estado"],
                    Tecnico = collection["Tecnico"],
                    FechaTicket = DateTime.Today,
                    FechaCierre = DateTime.Today,
                    Solucion = collection["Solucion"],
                    Descripcion = collection["Descripcion"],
                    Evaluacion = collection["Evaluacion"],
                    ComentarioSolucion = collection["ComentarioSolucion"]
                }
                );
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        

        // GET: /Incidente/Edit/5 
        public ActionResult Edit(int id)
        {
            Incidente model = ObtenerIncidente(id);
            return View(model);
        }
        // POST: /Incidente/Edit/5
        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                Incidente model = ObtenerIncidente(id);
                model.Cliente = collection["Cliente"];
                model.Servicio= collection["Servicio"];
                model.Tipo = collection["Tipo"];
                model.Estado = collection["Estado"];
                model.Tecnico = collection["Tecnico"];
                model.FechaTicket = DateTime.Today;
                model.FechaCierre = DateTime.Today;
                model.Solucion = collection["Solucion"];
                model.Descripcion = collection["Descripcion"];
                model.Evaluacion = collection["Evaluacion"];
                model.ComentarioSolucion = collection["ComentarioSolucion"];
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }



        // GET: /Incidente/Delete/5 
        public ActionResult Delete(int id)
        {
            Incidente model = ObtenerIncidente(id);
            return View(model);
        }
        // POST: /Incidente/Delete/5
        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                List<Incidente> incidentes = (List<Incidente>)Session["incidentes"];
                incidentes.Remove(ObtenerIncidente(id));
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
